ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド
リリース6.0
B25774-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

レプリケーションが正しく機能しない

マスター・データ・ストアとサブスクライバ・データ・ストアの間でレプリケーションを正しく機能させることができない場合、次のいずれかの問題が該当する可能性があります。

考えられる原因
対処
TimesTenデーモンまたはレプリケーション・エージェント(あるいはその両方)が稼働していない
マスターとサブスクライバのエージェントが通信していない
レプリケーションが起動状態にない
レプリケーション・スキームにエラーがある
レプリケーション・スキームと表の所有者名が一致しない
レプリケーション表に整合性がない

TimesTenデーモンとレプリケーション・エージェントのステータスを確認する

ttStatusユーティリティを使用して、メインTimesTenデーモンが稼働していること、およびすべてのマスターおよびサブスクライバのデータ・ストアについてレプリケーション・エージェントが起動していることを確認します。マスターおよびサブスクライバのデータ・ストアが1つしかない単純なレプリケーション・スキームの出力は、例4.1のようになります。

TimesTenデーモンが稼働していても、レプリケーション・エージェントが稼働していない場合、出力は例4.2に示すようになります。この場合は、『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』のレプリケーション・エージェントの起動と停止に関する項の説明に従って、レプリケーション・エージェントを起動します。

TimesTenデーモンとレプリケーション・エージェントがどちらも稼働していない場合、出力は例4.3に示すようになります。この場合は、TimesTenが正しくインストールされていること、およびData Managerサービスが起動されていることを確認します(『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のTimesTenのインストールに関する項を参照)。

例4.1
> ttStatus 
TimesTen status report as of Tue Oct 28 10:36:11 2003 
Daemon pid 3396 port 15000 instance MYINSTANCE 
TimesTen server pid 3436 started on port 15002 
------------------------------------------------------------------------ 
Data store c:\temp\subscriberds 
There are 3 connections to the data store 
Data store is in shared mode 
Shared Memory KEY Global\DBI3f9eb597.1.SHM.6 HANDLE 0x304 
Subdaemon pid 1336 context 0x5157d8 connected (KEY Global\DBI3f9eb597.1.SHM.6) 
Replication pid 2988 context 0xbc4068 connected (KEY Global\DBI3f9eb597.1.SHM.6) 
Replication pid 2988 context 0xbe7720 connected (KEY Global\DBI3f9eb597.1.SHM.6) 
cache agent restart policy: manual 
------------------------------------------------------------------------ 
Data store c:\temp\masterds 
There are 4 connections to the data store 
Data store is in shared mode 
Shared Memory KEY Global\DBI3f9eb58b.0.SHM.8 HANDLE 0x2e0 
Subdaemon pid 2364 context 0x5157d8 connected (KEY Global\DBI3f9eb58b.0.SHM.8) 
Replication pid 2496 context 0xbc4018 connected (KEY Global\DBI3f9eb58b.0.SHM.8) 
Replication pid 2496 context 0xbe76d0 connected (KEY Global\DBI3f9eb58b.0.SHM.8) 
Replication pid 2496 context 0xb97a90 connected (KEY Global\DBI3f9eb58b.0.SHM.8) 
cache agent restart policy: manual
例4.2
> ttStatus 
TimesTen status report as of Tue Oct 28 10:31:30 2003 
Daemon pid 3396 port 15000 instance MYINSTANCE 
TimesTen server pid 3436 started on port 15002 
----------------------------------------------------------------- 
Data store c:\temp\subscriberds 
There are no connections to the data store 
cache agent restart policy: manual 
----------------------------------------------------------------- 
Data store c:\temp\masterds 
There are no connections to the data store 
cache agent restart policy: manual 
----------------------------------------------------------------- 
End of report 
例4.3
> ttStatus 
ttStatus: Could not connect to TimesTen daemon: Connection
refused 
注意: UNIXシステムでは、TimesTenデーモンが稼働していない場合、ttStatusで接続が拒否されたことを示すメッセージが返されます。

レプリケーション・エージェントが通信していることを確認する

ttRepAdmin -receiver -listを使用して、レプリケーション・エージェントが互いに通信していることを確認します。masterdsデータ・ストアがsubscriberdsデータ・ストアにレプリケートされる場合、出力は次のようになります。

例4.4
> ttRepAdmin -receiver -list -connStr "dsn=masterDSN" 
Peer name         Host name                 Port    State  Proto 
----------------  ------------------------ ------  ------- ----- 
SUBSCRIBERDS      MYHOST                    Auto   Start       10 
Last Msg Sent Last Msg Recv Latency TPS     RecordsPS Logs 
------------- ------------- ------- ------- --------- ---- 
0:01:12       -               19.41       5        52    2 
 

次に、ttDaemonLogユーティリティを使用して、デーモン・ログでエラーを確認します。

> ttDaemonLog | grep Err > Errors

レプリケーションの状態を確認する

ttReplicationStatus()プロシージャを使用し、マスターに対するサブスクライバ・データ・ストアの状態を確認します。サブスクライバの状態がStopPauseまたはFailedの場合は、ttRepSubscriberStateSet()プロシージャを使用して、サブスクライバの状態をStartにリセットできます(『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』のサブスクライバのレプリケーション状態の設定に関する項を参照)。

例4.5

ttReplicationStatus()を使用して、subscriberdsデータ・ストアのステータスをそのマスター・データ・ストアmasterDSNから取得します。次のように入力します。

> ttIsql -connStr "dsn=masterDSN" 
Command> CALL ttReplicationStatus ('subscriberds'); 
< SUBSCRIBERDS, MYHOST, 0, pause, 1, 10, REPSCHEME, REPL > 
1 row found. 
 

状態をStartにリセットするには、次のようにttRepSubscriberStateSet()プロシージャをコールします。

Command> CALL ttRepSubscriberStateSet('REPSCHEME', 'REPL', 'SUBSCRIBERDS', 'MYHOST', 0) Command> CALL ttReplicationStatus ('subscriberds'); < SUBSCRIBERDS, MYHOST, 0, start, 1, 152959, REPSCHEME, REPL > 1 row found.

レプリケーション・スキームの構成を確認する

この項では、レプリケートされたシステムで様々なコンポーネントが正しく構成されていることを確認する手順について説明します。基本的な手順は次のようになります。

ttRepAdmin -showconfigの確認

ttRepAdmin -showconfigを使用して、レプリケーション・スキームの構成を確認します。

次の項目を確認します。

例4.6
> ttRepAdmin -showconfig -connStr "dsn=masterDSN" 
Self host "MYHOST", port auto, name "MASTERDS", LSN 4/2970276,
timeout 120, threshold 0 
List of subscribers 
----------------- 
Peer name         Host name                 Port    State  Proto 
----------------  ------------------------ ------  ------- ----- 
SUBSCRIBERDS      MYHOST                    Auto   Start      10 
Last Msg Sent Last Msg Recv Latency TPS     RecordsPS Logs 
------------- ------------- ------- ------- --------- ---- 
0:01:12       -               19.41       5        52    2 
List of tables and subscriptions 
-------------------------------- 
Table details 
------------- 
Table : REPL.TAB 
Master Name               Subscriber Name 
-----------               ------------- 
MASTERDS                  SUBSCRIBERDS 

TTREP.TTSTORES表の確認

TTREP.TTSTORES表で、レプリケーションによってレプリケーション・スキームがローカル・データ・ストアに関連付けられていることを確認できます。データ・ストアに接続し、次のように入力します。

select * from ttrep.ttstores where is_local_store <> 0x0; 
例4.7
Command> select * from ttrep.ttstores where is_local_store <> 0x0; 
< -5193371075573733683, MYHOST, MASTERDS, 01, 0, 0, 4, 0 > 
1 row found. 
 

1行の結果が返されます。2行以上返される場合は、オラクル社カスタマ・サポート・センターに連絡してください。1行も返されない場合は、次の文によって返されるホストは、TimesTenレプリケーションではローカル・システムとみなされません。

select distinct(host_name) from ttrep.ttstores;

また、レプリケーション・スキームで指定されたデータ・ストア名が、DSNの記述で指定されたデータ・ストア名と一致しない場合もあります。

ホスト名の確認

レプリケーション・スキームで指定されたホストとIPアドレスがレプリケーション・エージェントで解決できない場合、次のような原因が考えられます。

所有者名を確認する

『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』の表の要件と制限に関する項、およびレプリケーションのスキームと表の所有者に関する項で説明しているように、レプリケーション・スキームとレプリケーション表の所有者名は、関連するすべてのデータ・ストアで一致している必要があります。

レプリケーションの所有者の確認

レプリケーション・スキームに割り当てられている所有者名は、ttIsql repschemesコマンドをコールするか、TTREP.REPLICATIONS表の内容をリストして確認できます。

例4.8は、SYSTEM1とSYSTEM2の両方で、レプリケーション・スキーム名REPSCHEMEがデータ・ストアに一貫した所有者名(REPL)を持つことを示しています。例4.9は、所有者名が一貫していないスキーム名を示しています。これは、レプリケーション・スキームの定義で所有者名の指定を省略し、システムがそのレプリケーション・スキームの作成者のIDを採用した場合に発生することがあります。

例4.8

SYSTEM1:

> ttIsql -connStr "dsn=masterDSN" 
Command> select * from ttrep.replications; 
< REPSCHEME            , REPL                 , C, 0, 0, -1 > 
1 row found. 
 

SYSTEM2:

> ttIsql -connStr "dsn=subscriberDSN" Command> select * from ttrep.replications; < REPSCHEME            , REPL                 , C, 0, 0, -1 > 1 row found.
例4.9

SYSTEM1:

> ttIsql -connStr "dsn=masterDSN" 
Command> select * from ttrep.replications; 
< REPSCHEME            , SYSTEM1               , C, 0, 0, -1 > 
1 row found. 
 

SYSTEM2:

> ttIsql -connStr "dsn=subscriberDSN" Command> select * from ttrep.replications; < REPSCHEME            , SYSTEM2               , C, 0, 0, -1 > 1 row found.

表の所有者の確認

ttIsqlコマンドのtablesを使用して、各データ・ストアの表に割り当てられている所有者名を確認できます。

例4.10は、SYSTEM1とSYSTEM2の両方で、TAB表がデータ・ストアに一貫した所有者名(REPL)を持つことを示しています。例4.11は、所有者名が各ホストに対して自動的に割り当てられ、それらが一貫していないTAB表を示しています。

例4.10

例4.11

レプリケーション表間の整合性を確認する

マスター・データ・ストアとサブスクライバ・データ・ストアの両方で、レプリケーション表は完全に同じである必要があります。